# Upload and process the data:
process_country_data <- function(country, data_filepath) {
  
  # Data import
  
  roster_data <- read.csv(
    paste0(data_filepath, "Descriptive/", country, "_roster_data.csv"),
    na.strings = ""
  )
  
  edu_labor_data <- read.csv(
    paste0(data_filepath, "Descriptive/", country, "_edu_labor_data.csv"),
    na.strings = ""
  ) %>% left_join(roster_data %>% select(c(a_country_hhid, c_primary_male_exists))) %>% filter(c_primary_male_exists == 1)
  
  female_dm_long <- read.csv(
    paste0(data_filepath, "Descriptive/", country, "_female_dm_long.csv"),
    na.strings = ""
  ) %>% left_join(roster_data %>% select(c(a_country_hhid, c_primary_male_exists))) %>% filter(c_primary_male_exists == 1)
  
  female_tu_week <- read.csv(
    paste0(data_filepath, "Descriptive/", country, "_female_tu_week.csv"
    ), na.strings = ""
  ) %>% left_join(roster_data %>% select(c(a_country_hhid, c_primary_male_exists))) %>% filter(c_primary_male_exists == 1)
  
  male_tu_week <- read.csv(
    paste0(data_filepath, "Descriptive/", country, "_male_tu_week.csv"
    ), na.strings = ""
  ) %>% left_join(roster_data %>% select(c(a_country_hhid, c_primary_male_exists))) %>% filter(c_primary_male_exists == 1)
  
  # Labor questions
  edu_labor_summary <- edu_labor_data %>%
    filter(hoh %in% c("Female HoH", "Male HoH")) %>%
    mutate(paid_employment = case_when(
      i05_employment == "Yes" ~ 1,
      i05_employment == "No" ~ 0,
      TRUE ~ NA_real_
    )) %>%
    group_by(hoh) %>%
    summarise(
      avg_age = as.numeric(format(round(mean(i_age02, na.rm = TRUE), 1), nsmall = 1)),
      n_obs = sum(!is.na(i_age02))  # Count non-missing age observations
    )
  
  # Decision making
  household_dm <- female_dm_long %>%
    filter(a_country_hhid != 41157) %>%
    filter(question == "Who Makes Decisions About..." & topic == "Male HoH Working (Salaried Employment)?") %>%
    mutate(
      Man_involved_dm_man_work =
        case_when(
          (value == "Male HoH" | value == "Both") ~ 1, 
          (value != "Male HoH" & value != "Both") ~ 0, 
          TRUE ~ NA_real_
        ),
      Woman_involved_dm_man_work =
        case_when(
          (value == "Female HoH" | value == "Both") ~ 1, 
          (value != "Female HoH" & value != "Both") ~ 0, 
          TRUE ~ NA_real_
        )) %>% 
    select(a_country_hhid, Man_involved_dm_man_work, Woman_involved_dm_man_work) %>%
    full_join(
      female_dm_long %>%
        filter(a_country_hhid != 41157) %>%
        filter(question == "Who Makes Decisions About..." & topic == "Female HoH Working (Salaried Employment)?") %>%
        mutate(
          Man_involved_dm_woman_work =
            case_when(
              (value == "Male HoH" | value == "Both") ~ 1, 
              (value != "Male HoH" & value != "Both") ~ 0, 
              TRUE ~ NA_real_
            ),
          Woman_involved_dm_woman_work =
            case_when(
              (value == "Female HoH" | value == "Both") ~ 1, 
              (value != "Female HoH" & value != "Both") ~ 0, 
              TRUE ~ NA_real_
            )) %>% 
        select(a_country_hhid, Man_involved_dm_woman_work, Woman_involved_dm_woman_work)
    )
  
  involved_summary <- household_dm %>%
    summarise(
      Female_HoH_involved_dm_man_work = mean(Woman_involved_dm_man_work, na.rm = TRUE),
      Female_HoH_involved_dm_woman_work = mean(Woman_involved_dm_woman_work, na.rm = TRUE),
      Male_HoH_involved_dm_man_work = mean(Man_involved_dm_man_work, na.rm = TRUE),
      Male_HoH_involved_dm_woman_work = mean(Man_involved_dm_woman_work, na.rm = TRUE)
    ) %>%
    pivot_longer(
      cols = everything(),
      names_to = c("hoh", "involved_dm"),
      names_pattern = "(Female_HoH|Male_HoH)_(.*)"
    ) %>%
    pivot_wider(
      names_from = involved_dm,
      values_from = value
    ) %>%
    mutate(hoh = recode(hoh, 
                        "Female_HoH" = "Female HoH", 
                        "Male_HoH" = "Male HoH"))
  
  # Time use
  female_tu_week <- female_tu_week %>%
    mutate(
      any_work = 
        case_when(
          work_paid_ag>0 | work_paid >0 ~ 1,
          work_paid_ag == 0 & work_paid == 0 ~ 0,
          TRUE ~ NA_real_
        )
    ) 
  
  male_tu_week <- male_tu_week %>%
    mutate(
      any_work = 
        case_when(
          work_paid_ag>0 | work_paid >0 ~ 1,
          work_paid_ag == 0 & work_paid == 0 ~ 0,
          TRUE ~ NA_real_
        )
    )
  
  participation_female <- female_tu_week %>%
    summarise(
      any_work= mean(any_work, na.rm = TRUE)
    ) %>%
    mutate(hoh = "Female HoH")
  
  participation_male <- male_tu_week %>%
    summarise(
      any_work = mean(any_work, na.rm = TRUE)
    ) %>%
    mutate(hoh = "Male HoH")
  
  participation <- bind_rows(participation_female, participation_male) %>%
    select(hoh, everything())
  
  # Combine all summaries
  combined_summary <- participation %>% 
    left_join(edu_labor_summary) %>%
    left_join(involved_summary) %>%
    mutate(country = country) # Add the country variable
  
  return(combined_summary)
}

# Process data for each country
haiti_combined_results <- process_country_data("haiti", haiti_data_filepath)
kenya_combined_results <- process_country_data("kenya", kenya_data_filepath)
rwanda_combined_results <- process_country_data("rwanda", rwanda_data_filepath)

# Combine results for all countries
final_combined_results <- bind_rows(haiti_combined_results, kenya_combined_results, rwanda_combined_results)

final_combined_results_long <- final_combined_results %>%
  pivot_longer(cols = -c(country, hoh), names_to = "variable", values_to = "value")

wide_data <- final_combined_results_long %>%
  pivot_wider(names_from = c(country, hoh), values_from = value) %>%
  arrange(variable) %>%
  filter(variable != "avg_working")

# Replace "avg_age" with "Age" in the column named "variable"

# Replace values in the "variable" column using case_when
wide_data <- wide_data %>%
  mutate(variable = case_when(
    variable == "avg_age" ~ "Age",
    variable == "any_work" ~ "Works for Pay*",
    variable == "involved_dm_man_work" ~ "man's work",
    variable == "involved_dm_woman_work" ~ "woman's work",
    variable == "n_obs" ~ "\\# of observations",
    TRUE ~ variable  # Keep all other values unchanged
  ))

# Define the desired order
desired_order <- c(
  "Age",
  "Works for Pay*",
  "woman's work",
  "man's work",
  "\\# of observations"
)

# Reorder the rows and add new ones
wide_data <- wide_data %>%
  mutate(variable = factor(variable, levels = desired_order)) %>%
  arrange(variable)

part_1 <- wide_data[c(1), ] 
part_2 <- wide_data[c(2), ] 
part_3 <- wide_data[c(3, 4), ] 
part_4 <- wide_data[c(5), ] 

# Create xtable
part_1 <- kbl(part_1, 
              format = "latex",
              align = "lcccccc",
              escape = FALSE, 
              digits = 1, 
              col.names = NULL)
part_1 <-  unlist(strsplit(part_1, "\n"))[4]

part_2 <- kbl(part_2, 
              format = "latex", 
              align = "lcccccc",
              escape = FALSE, 
              digits = 2, 
              col.names = NULL)  
part_2 <-  unlist(strsplit(part_2, "\n"))[4]

part_3 <- kbl(part_3, 
              format = "latex", 
              align = "lcccccc",
              escape = FALSE, 
              digits = 2, 
              col.names = NULL,
              booktabs = TRUE)  
part_4 <- kbl(part_4, 
              format = "latex", 
              escape = FALSE, 
              digits = 0, 
              col.names = NULL)  
part_3 <-  unlist(strsplit(part_3, "\n"))[4:5]
part_4 <-  unlist(strsplit(part_4, "\n"))[4]


table_1 <- paste0(
  "\\documentclass{standalone}",
  "\\usepackage[utf8]{inputenc}",
  "\\usepackage{graphicx}",
  "\\usepackage{booktabs}",
  "\\begin{document}",
  "\\begin{tabular}{lcccccc}",
  "\\hline\\hline",
  "& \\multicolumn{2}{c}{Haiti} &  \\multicolumn{2}{c}{Kenya} & \\multicolumn{2}{c}{Rwanda} \\\\",
  " \\cmidrule(lr){2-3} \\cmidrule(lr){4-5} \\cmidrule(lr){6-7}",
  " & Woman & Man & Woman & Man & Woman & Man \\\\",
  " & (1) & (2) & (3) & (4) & (5) & (6) \\\\",
  " \\midrule \\\\",
  paste(part_1, collapse = "\n"),
  paste(part_2, collapse = "\n"),
  " \\multicolumn{4}{l}{\\textbf{Is involved in decision making over...}}  &  &  &  \\\\",
  paste(part_3, collapse = "\n"),
  "\\hline \\\\",
  paste(part_4, collapse = "\n"),
  "\\hline",
  "\\hline",
  "\\end{tabular}",
  "\\end{document}"
)

# Save to file
writeLines(table_1, paste0(outputs_filepath, "Table 1.tex"))

 tinytex::pdflatex(
   file     = paste0(outputs_filepath, "Table 1.tex"),
   pdf_file = paste0(outputs_filepath, "Table 1.pdf")
 )
